// 地点位置相关类型定义

// 地点位置新增请求对象（根据接口文档定义）
export interface MrsLocationAddRequest {
  locationType?: string;           // 位置类型 building=建筑 floor=楼层 room=房间
  name?: string;                   // 地点位置名称
  orderNum?: number;               // 排序序号，从大到小，越大越靠前
  parentId?: number;               // 父地点位置ID
  tenantId?: number;               // 商户ID
}

// 地点位置信息对象
export interface MrsLocation extends MrsLocationAddRequest {
  id?: number;                     // 地点位置ID
  createTime?: string;             // 创建时间
  updateTime?: string;             // 更新时间
  status?: number;                 // 状态
  children?: MrsLocation[];        // 子级地点位置列表（树形结构）
}

// 地点位置查询参数
export interface LocationQueryParams {
  page?: number;
  size?: number;
  name?: string;
  locationType?: string;
  tenantId?: number;
  parentId?: number;
}

// 地点位置列表响应
export interface LocationListResponse {
  content: MrsLocation[];
  totalElements: number;
  totalPages: number;
  size: number;
  number: number;
}

// 地点位置树形结构节点
export interface LocationTreeNode {
  id: string | number;
  name: string;
  type: string;                    // building, floor, room
  locationType?: string;           // 对应后端的locationType
  parentId?: number;
  tenantId?: number;
  orderNum?: number;
  children?: LocationTreeNode[];
}

// 地点位置类型枚举
export enum LocationType {
  BUILDING = 'building',
  FLOOR = 'floor',
  ROOM = 'room'
}

// 地点位置类型中文映射
export const LocationTypeLabels = {
  [LocationType.BUILDING]: '建筑',
  [LocationType.FLOOR]: '楼层',
  [LocationType.ROOM]: '房间'
} as const;

// 响应数据类型（根据接口文档定义）
export interface ResponseData<T = any> {
  code: number;
  data: T;
  msg: string;
  success: boolean;
  warnings?: any[];
  exception?: any;
}